题意
一个无向图,给出$m$条边,有$k$次询问,每次询问将第$l_{i}$到$r_{i}$条边暂时删去,求这时候有多少个连通分量.$N\leqslant500,1\leqslant M,K\leqslant10000$
每次暴力建边(即建$1$ ~ $(l_{i}-1),(r_{i}+1)$ ~ $m$这些边),用并查集维护的思路很好想,复杂度为$O(mk)$, 在卡常或是手动$O3$的情况下可以跑过,但并不是最优解。
我们发现很多边重复建了很多次,没有意义,于是我们只需要预处理出$1$ ~ $l_{i}$这些边连起来得到的并查集与$r_{i}$~$n$这些边连起来得到的并查集,将其合并,求出联通快即可。
难点:如何合并?
我们可以将左边i条边所得的并查集$l_{i}$直接复制到现在一个的并查集$f$中,然后,我们将现在正在处理的并查集中的每个元素和连右边$j$条边的并查集$r_{j}$的元素一一合并,得到一个新的并查集,这个新的并查集中集合的元素就是答案(统计有多少$f_{i}=i$即可)。
1 |
|